The keyboard has been the primary input device to the earliest personal computer systems, such as the early IBM Personal Computer. Personal computers have evolved quite a bit since those earlier days, but the keyboard still remains an integral part of the system.
The widespread acceptance of personal computers spurred the development of many new software application programs. These application programs provide some sort of service to a user or community of users. Many application programs are written to be interactive with the user. In most cases, this interaction between the user and the computer is done through a keyboard. The user can depress the keys on the keyboard to form a stream of input data or commands which is used by the application program. By data or commands it is intended that commands, while clearly data, are data specifically configured to cause the computer and/or application programs therein to operate on or transform in a specified manner other data. The application program usually takes action based on what data or commands the user typed in.
The interaction between keyboard user and computer is conventional and well known to those of ordinary skill in this art.
For purposes of this disclosure, typical systems which can be used to practice the invention include the IBM PS/2 line of personal computers, or compatibles. These systems have keyboard device drivers, where the user chooses to use the computer without a keyboard attached, and substitutes an alternate input device such as a handprint terminal, or the like to practice the invention.
It is important to appreciate that practice of the invention with an alternate input device does not preclude simultaneous use of a standard keyboard device because synchronization between the two types of devices is provided by the practice of the invention as is described hereinafter.
Conventional software applications, in most cases, rely on the operating system provided application programming interfaces (APIs) for keyboard input. Examples of such applications include spreadsheet programs, word processing programs, graphical drafting programs, etc. These APIs shield the application programs from the specifics of the actual keyboard hardware architecture and provide an easy mechanism for the user to interact with the computer. By using the operating system provided APIs, these application programs can be guaranteed to work across numerous hardware configurations as long as the operating system is the same on these different computer systems.
Typical of operating systems which provide such APIs are the IBM OS/2 and DOS operating systems. Examples of such APIs are described in the OS/2 Programmers Guide, pages 519-540, published 1988, and IBM Personal System/2 and Personal Computer BIOS Interface Technical Reference, Chapter 2, pages 104-110, published 1987, the contents of which are incorporated by reference herein.
Further examples of other operating systems having similar APIs and with which it is contemplated the present invention may be implemented include, in a non-limiting manner, AT&T's UNIX, IBM's AIX, Microsoft's XENIX, and APPLE's computer operating systems, including the Macintosh operating system.
As more sophisticated input devices are developed, the need for operating system provided keyboard emulation becomes apparent. For example, if a user of some computer system, with a unique input device, like the handprint terminal described in U.S. Pat. No. 4,562,304, issued to Ward and Nilssen, entitled "Apparatus and Method for Emulating Computer Keyboard Input with a Handprint Terminal", wants to use any of the interactive applications described above as if he were using a keyboard, he would have to provide operating system software that does the following:
A. Communicates with the handprint terminal hardware; PA0 B. Translates the raw hardware generated data into a format recognizable to the application programs and the rest of the operating system; PA0 C. Synchronize the data between multiple sessions of the multitasking operating system PA0 D. Communicate with the other software components that make up the operating system; PA0 E. Communicate with application software programs, either directly or indirectly through another operating system component; and PA0 F. Route the keystroke data to the appropriate interface.
In some operating systems this is impossible to accomplish. To accomplish the above task in the commercially available IBM OS/2 version 1.2 operating system, for example, you have to write a specific device driver for the unique input device. Although the implementation of step "A" above can be achieved by someone of ordinary skill in the art, steps "B", "C", "D", "E", and "F" cannot be accomplished due to the fact that the interfaces required to perform each of these tasks are undocumented interfaces. Even if these interfaces were known, the changing nature of the inner workings of the operating system level code and interfaces would cause inevitable compatibility errors.
This invention overcomes these problems by providing, for example, in a system similar to that described in U.S. Pat. No. 4,562,304, that the output of the handprint terminal, e.g., at point 71 of FIG. 1 of U.S. Pat. No. 4,562,304, to be sent to an operating system provided keyboard emulation interface that sends the data to the rest of the operating system as if the data actually came from a physical keyboard. The operating system then routes this data to any application registered for keyboard input, in the format expected and known to those of ordinary skill in this art.